package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * Classe de conexão com banco de dados
 * @author Alan Alves Oliveira
 */
public abstract class ConexaoBD {

    /**
     * Recupera uma conexão - MySQL - Banco de dados: cliente
     * @param caminho Caminho do servidor de banco de dados. Exemplo: localhost:3306
     * @param nomeBD Nome do banco de dados a ser conectado.
     * @param usuario Nome do usuáiro com permissão de conexão.
     * @param senha Senha do usuário com permissão de conexão.
     * @return Objeto Connection - conexão com o banco de dados MySQL
     * @throws ClassNotFoundException
     * @throws InstantiationException
     * @throws IllegalAccessException
     * @throws SQLException
     */
    public Connection getConexao(String caminho, String nomeBD, String usuario, String senha) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
        Connection conn = null;
        try {
            // Abre conexão com MySQL usando driver jdbc
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            String url = "jdbc:mysql://" +
                    caminho + "/" +
                    nomeBD + "?user=" +
                    usuario + "&password=" +
                    senha;
            conn = DriverManager.getConnection(url);
        } catch (ClassNotFoundException e) {
            throw new ClassNotFoundException(e.getMessage());
        } catch (InstantiationException e) {
            throw new InstantiationException(e.getMessage());
        } catch (IllegalAccessException e) {
            throw new IllegalAccessException(e.getMessage());
        } catch (SQLException e) {
            throw new SQLException(e.getMessage());
        }
        return conn;
    }

}